home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-04-18 | 41.4 KB | 2,392 lines |
- ;====================================================================
- ;= Big Brother V2.11 by The Orega Programming Group Holland (c)1989 =
- ;= Programmer: EA van Breemen =
- ;= Assembler : DevPac 2.14 =
- ;====================================================================
-
- ;====================================================================
- ;= Modifications: =
- ;= 24-1-90: fixed ctrl-Help bug =
- ;= added newcli =
- ;= optimized coding =
- ;= 26-1-90: added newcli gadget =
- ;= modified tekstborder =
- ;= fixed 'system has been modified' tekst bug =
- ;= 27-1-90: fixed AlertWarning =
- ;= adjusted some windowsizes =
- ;= intuified viewbootblocktekst =
- ;= regulated bootio errors =
- ;= added help =
- ;= added preferences =
- ;= 21-10-90 fixed the memory clean message update bug =
- ;= added script options =
- ;= 23-10-90 make auto detaching =
- ;= 24-10-90 fixed another clean message box bug =
- ;= added ReBoot routine =
- ;= 25-10-90 BigBrother is now using the official reboot =
- ;= 27-10-90 Fixed the endcli bug =
- ;= 01-12-90 Fixed multiple selection bug. BB replies to all =
- ;= messages first before next Wait =
- ;= Version 2.11 Final release. =
- ;====================================================================
-
-
- XLIB macro
- xref _LVO\1
- endm
-
-
- MEMORY equ $1
- VIEW equ $2
- CLEAR equ $3
- INSTALL equ $4
- DRIVE equ $5
- WATCH equ $6
- NEWSHELL equ $7
- HELP equ $8
- REBOOT equ $9
-
-
- READ equ $2
- WRITE equ $3
-
-
- IECLASS_RAWKEY equ $01
- IEQUALIFIER_CONTROL equ $08
-
- HELP_KEY equ $5f
- FUNC_F1 equ $50
- FUNC_F2 equ $51
- FUNC_F3 equ $52
- FUNC_F4 equ $53
- FUNC_F5 equ $54
- FUNC_F6 equ $55
- FUNC_F7 equ $56
- FUNC_F8 equ $57
- FUNC_F9 equ $58
- FUNC_F10 equ $59
-
-
-
- IND_ADDHANDLER equ $09
- NT_MESSAGE equ $05
- NT_MSGPORT equ $04
- PA_SIGNAL equ $00
- io_Message equ $00
- io_Data equ $28
- io_Command equ $1c
- Ln_Type equ $08
- Ln_Name equ $0a
- Ln_Pri equ $09
- mp_Node equ $00
- mp_SigBit equ $0f
- mp_Flags equ $0e
- mp_SigTask equ $10
- mn_Node equ $00
- mn_Length equ $12
- mn_ReplyPort equ $0e
-
- gg_GadgetID equ $26
-
- im_Class equ $14
- im_Code equ $18
- im_Address equ $1c
-
- wd_UserPort equ $56
- wd_RPort equ $32
-
- WindowPtr equ $b8
-
- is_Code equ $12
- is_Data equ $0e
- is_Node equ $00
-
- GADGETUP equ $40
- GADGHNONE equ $03
- CLOSEWINDOW equ $200
- WINDOWDRAG equ $02
- WINDOWDEPTH equ $04
- WINDOWCLOSE equ $08
- ACTIVATE equ $1000
- NOCAREREFRESH equ $20000
- WBENCHSCREEN equ $01
- RELVERIFY equ $01
- BOOLGADGET equ $01
- RP_JAM1 equ $00
- RP_JAM2 equ $01
-
- TD_CHANGESTATE equ 14
-
- NULL equ $00
-
- MAGIC_ROMEND EQU $01000000 ;End of Kickstart ROM
- MAGIC_SIZEOFFSET EQU -$14 ;Offset from end of ROM to Kickstart size
- V36_EXEC EQU 36 ;Exec with the ColdReboot() function
- TEMP_ColdReboot EQU -726 ;Offset of the V36 ColdReboot function
- LIB_VERSION EQU $14
-
-
- XLIB OpenLibrary
- XLIB CloseLibrary
- XLIB OpenDevice
- XLIB CloseDevice
- XLIB OpenWindow
- XLIB CloseWindow
- XLIB DoIO
- XLIB Delay
- XLIB GetMsg
- XLIB ReplyMsg
- XLIB AllocSignal
- XLIB FreeSignal
- XLIB FindTask
- XLIB AddPort
- XLIB RemPort
- XLIB FindName
- XLIB DeviceProc
- XLIB RefreshGadgets
- XLIB Wait
- XLIB Move
- XLIB Text
- XLIB SetAPen
- XLIB AllocMem
- XLIB FreeMem
- XLIB SetWindowTitles
- XLIB FindResident
- XLIB RemTask
- XLIB DisplayBeep
- XLIB Disable
- XLIB Enable
- XLIB DrawBorder
- XLIB PrintIText
- XLIB WBenchToFront
- XLIB DisplayAlert
- XLIB SizeWindow
- XLIB WaitPort
- XLIB Open
- XLIB Close
- XLIB Read
- XLIB Lock
- XLIB UnLock
- XLIB Execute
- XLIB CreateProc
- XLIB WaitPort
- XLIB Supervisor
- XLIB Write
- XLIB Output
-
- _ASyncRun equ -$222
- STACK_SIZE equ 4096
-
-
-
- ;===================================
- ;= Startup code for auto detaching =
- ;= BigBrother V2.11 =
- ;===================================
-
-
- section "Startup",code
-
- start move.l $4,a6
- sub.l a1,a1
- jsr _LVOFindTask(a6)
- move.l d0,a4
- tst.l $ac(a4) ; Are we from the WBench ????
- bne.s from_cli
- lea.l $5c(a4),a0
- jsr _LVOWaitPort(a6)
- jsr _LVOGetMsg(a6) ; Get message
- from_cli:
- move.l $4,a6
- lea.l DosName,a1
- clr.l d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,a5
- beq uit
- move.l a5,a6
- jsr _LVOOutput(a6)
- move.l d0,d1
- move.l #Title,d2
- move.l #80,d3
- jsr _LVOWrite(a6)
- move.l #NIL_NAME,d1
- move.l #1006,d2
- jsr _LVOOpen(a6)
- move.l d0,pcb_Input
- move.l d0,pcb_Output
-
-
- move.l $4,a6
- lea.l ArpName,a1
- clr.l d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,ArpBase
- bne 1$
- bra 2$
- 1$ move.l ArpBase,a6
- move.l #0,a0
- move.l #0,a1
- lea.l newshell2,a2
- jsr _ASyncRun(a6)
- move.l $4,a6
- move.l ArpBase,a1
- jsr _LVOCloseLibrary(a6) ; Close Arp
-
- lea.l start,a0
- move.l #0,-4(a0) ; Erase pointer to next segment
-
- 2$ move.l $4,a6
- move.l a5,a1
- jsr _LVOCloseLibrary(a6)
-
- uit rts
-
-
-
- data
-
- Title dc.b 'BigBrother V2.11 ',169,'1990 by EA van Breemen',10,13
- dc.b 'The Orega Programming Group Holland.',10,13,0
-
- even
-
- NewWindowStructure1:
- dc.w 62,30
- dc.w 330,126
- dc.b 0,1
- dc.l GADGETUP+CLOSEWINDOW
- dc.l WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH
- dc.l Gadget1
- dc.l NULL
- dc.l CopyrightName
- dc.l NULL
- dc.l NULL
- dc.w 5,5
- dc.w -1,-1
- dc.w WBENCHSCREEN
- NewWindowStructure2:
- dc.w 0,0
- hsize dc.w 550,150
- dc.b 0,1
- dc.l CLOSEWINDOW
- dc.l ACTIVATE+NOCAREREFRESH+WINDOWCLOSE
- dc.l NULL
- dc.l NULL
- title2 dc.l InitTitle
- dc.l NULL
- dc.l NULL
- dc.w 5,5
- dc.w -1,-1
- dc.w WBENCHSCREEN
- CopyrightName:
- dc.b 'Big Brother V2.11',0
- dc.b ' ',169,'1989/1990',0
- cnop 0,2
- InitTitle:
- dc.b 'BootBlock:',0
- even
- ViewTitle:
- dc.b 'Contents of ExecBase:',0
- even
- InstallTitle:
- dc.b 'Installing BootBlock',0
- even
- HelpTitle:
- dc.b 'Help',0
- even
- install_message:
- dc.b 'Disk has been installed',0
- even
- install_fail:
- dc.b 'Install has failed',0
- even
- disk_protected:
- dc.b 'Disk is write-protected!',0
- even
- disk_changed:
- dc.b 'Disk has been removed!',0
- even
- StandardBootBlock:
- dc.b 'Standard BootBlock by The Orega Programming Group Holland.'
- dc.b ' Copyright 1989,1990. Installed by Big Brother V2.11'
- Standardend:
- even
- prefs_file:
- dc.b 's:big_prefs',0
- even
- Gadget1:
- dc.l Gadget2
- dc.w 29,22
- dc.w 80,15
- dc.w GADGHNONE
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l NULL
- dc.l IText1
- dc.l NULL
- dc.l NULL
- dc.w DRIVE
- dc.l NULL
- Border1:
- dc.w 0,0
- dc.b 2,0,RP_JAM2
- dc.b 5
- dc.l BorderVectors1
- dc.l Border1a
- Border1a:
- dc.w -1,-1
- dc.b 1,0,RP_JAM1
- dc.b 5
- dc.l BorderVectors1
- dc.l NULL
- BorderVectors1:
- dc.w 0,0
- dc.w 80,0
- dc.w 80,15
- dc.w 0,15
- dc.w 0,0
-
- ;======== Custom Drawing =======================
-
- Border2:
- dc.w 30,96
- dc.b 2,0,RP_JAM2
- dc.b 5
- dc.l BorderVectors2
- dc.l Border3
- Border3:
- dc.w 28,95
- dc.b 1,0,RP_JAM1
- dc.b 5
- dc.l BorderVectors2
- dc.l NULL
- BorderVectors2: ; Tekstbox of mainwindow
- dc.w 0,0
- dc.w 283,0
- dc.w 283,26
- dc.w 0,26
- dc.w 0,0
- MyTekst:
- dc.b 2,0,RP_JAM2,0
- dc.w 45,110
- dc.l NULL
- Mt1 dc.l NULL
- dc.l MyTekst2
- MyTekst2:
- dc.b 1,0,RP_JAM1,0
- dc.w 44,109
- dc.l NULL
- Mt2 dc.l NULL
- dc.l NULL
- MyTekst3:
- dc.b 2,0,RP_JAM2,0
- dc.w 45,100
- dc.l NULL
- Mt3 dc.l NULL
- dc.l MyTekst4
- MyTekst4:
- dc.b 1,0,RP_JAM1,0
- dc.w 44,99
- dc.l NULL
- Mt4 dc.l NULL
- dc.l NULL
-
-
- ;=====================================================
- ;= IntuiText structures for clearing the message box =
- ;=====================================================
-
- MyTekst3a:
- dc.b 2,0,RP_JAM2,0
- dc.w 45,100
- dc.l NULL
- dc.l L10
- dc.l MyTekst4a
- MyTekst4a:
- dc.b 1,0,RP_JAM2,0
- dc.w 44,99
- dc.l NULL
- dc.l L10
- dc.l MyTekst3b
- MyTekst3b:
- dc.b 2,0,RP_JAM2,0
- dc.w 45,110
- dc.l NULL
- dc.l L10
- dc.l MyTekst4b
- MyTekst4b:
- dc.b 1,0,RP_JAM2,0
- dc.w 44,109
- dc.l NULL
- dc.l L10
- dc.l NULL
-
-
-
- MyTekst5:
- dc.b 2,0,RP_JAM2,0
- dc.w 40,25
- dc.l NULL
- Mt5 dc.l NULL
- dc.l MyTekst6
- MyTekst6:
- dc.b 1,0,RP_JAM1,0
- dc.w 39,24
- dc.l NULL
- Mt6 dc.l NULL
- dc.l NULL
-
- ;=====================================
-
-
- IText1:
- dc.b 2,0,RP_JAM2,0
- dc.w 21,3
- dc.l NULL
- dc.l DummyTekst
- dc.l IText1a
- IText1a:
- dc.b 2,0,RP_JAM2,0
- dc.w 22,4
- dc.l NULL
- dc.l ITextText1
- dc.l IText1b
- IText1b:
- dc.b 1,0,RP_JAM1,0
- dc.w 21,3
- dc.l NULL
- dc.l ITextText1
- dc.l NULL
-
- ITextText1:
- dc.b 'DF0:',0
- cnop 0,2
- DummyTekst:
- dc.b ' ',0
- cnop 0,2
- Gadget2:
- dc.l Gadget3
- dc.w 128,46
- dc.w 80,15
- dc.w NULL
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l NULL
- dc.l IText2
- dc.l NULL
- dc.l NULL
- dc.w MEMORY
- dc.l NULL
- IText2:
- dc.b 2,0,RP_JAM2,0
- dc.w 15,4
- dc.l NULL
- dc.l ITextText2
- dc.l IText2b
- IText2b:
- dc.b 1,0,RP_JAM1,0
- dc.w 14,3
- dc.l NULL
- dc.l ITextText2
- dc.l NULL
- ITextText2:
- dc.b 'Memory',0
- cnop 0,2
- Gadget3:
- dc.l Gadget4
- dc.w 229,22
- dc.w 80,15
- dc.w NULL
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l NULL
- dc.l IText3
- dc.l NULL
- dc.l NULL
- dc.w INSTALL
- dc.l NULL
-
- IText3:
- dc.b 2,0,RP_JAM2,0
- dc.w 13,4
- dc.l NULL
- dc.l ITextText3
- dc.l IText3b
- IText3b:
- dc.b 1,0,RP_JAM1,0
- dc.w 12,3
- dc.l NULL
- dc.l ITextText3
- dc.l NULL
- ITextText3:
- dc.b 'Install',0
- cnop 0,2
- Gadget4:
- dc.l Gadget5
- dc.w 29,46
- dc.w 80,15
- dc.w NULL
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l NULL
- dc.l IText4
- dc.l NULL
- dc.l NULL
- dc.w WATCH
- dc.l NULL
-
- IText4:
- dc.b 2,0,RP_JAM2,0
- dc.w 22,4
- dc.l NULL
- dc.l ITextText4
- dc.l IText4b
- IText4b:
- dc.b 1,0,RP_JAM1,0
- dc.w 21,3
- dc.l NULL
- dc.l ITextText4
- dc.l NULL
- ITextText4:
- dc.b 'Watch',0
- cnop 0,2
- Gadget5:
- dc.l Gadget6
- dc.w 229,46
- dc.w 80,15
- dc.w NULL
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l NULL
- dc.l IText5
- dc.l NULL
- dc.l NULL
- dc.w CLEAR
- dc.l NULL
-
- IText5:
- dc.b 2,0,RP_JAM2,0
- dc.w 22,4
- dc.l NULL
- dc.l ITextText5
- dc.l IText5b
- IText5b:
- dc.b 1,0,RP_JAM1,0
- dc.w 21,3
- dc.l NULL
- dc.l ITextText5
- dc.l NULL
- ITextText5:
- dc.b 'Clear',0
- cnop 0,2
- Gadget6:
- dc.l Gadget7
- dc.w 128,22
- dc.w 80,15
- dc.w NULL
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l NULL
- dc.l IText6
- dc.l NULL
- dc.l NULL
- dc.w VIEW
- dc.l NULL
-
- IText6:
- dc.b 2,0,RP_JAM2,0
- dc.w 22,4
- dc.l NULL
- dc.l ITextText6
- dc.l IText6b
- IText6b:
- dc.b 1,0,RP_JAM1,0
- dc.w 21,3
- dc.l NULL
- dc.l ITextText6
- dc.l NULL
- ITextText6:
- dc.b 'View',0
- even
-
- Gadget7:
- dc.l Gadget8
- dc.w 29,70
- dc.w 80,15
- dc.w NULL
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l NULL
- dc.l IText7
- dc.l NULL
- dc.l NULL
- dc.w NEWSHELL
- dc.l NULL
- IText7:
- dc.b 2,0,RP_JAM2,0
- dc.w 10,4
- dc.l NULL
- dc.l ITextText7
- dc.l IText7b
- IText7b:
- dc.b 1,0,RP_JAM1,0
- dc.w 9,3
- dc.l NULL
- dc.l ITextText7
- dc.l NULL
- ITextText7:
- dc.b 'NewShell',0
-
- even
- Gadget8:
- dc.l Gadget9
- dc.w 229,70
- dc.w 80,15
- dc.w NULL
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l NULL
- dc.l _IText8
- dc.l NULL
- dc.l NULL
- dc.w HELP
- dc.l NULL
- _IText8:
- dc.b 2,0,RP_JAM2,0
- dc.w 23,4
- dc.l NULL
- dc.l _ITextText8
- dc.l _IText8b
- _IText8b:
- dc.b 1,0,RP_JAM1,0
- dc.w 22,3
- dc.l NULL
- dc.l _ITextText8
- dc.l NULL
- _ITextText8:
- dc.b 'Help',0
-
- even
-
- Gadget9:
- dc.l NULL
- dc.w 128,70
- dc.w 80,15
- dc.w NULL
- dc.w RELVERIFY
- dc.w BOOLGADGET
- dc.l Border1
- dc.l NULL
- dc.l _IT9
- dc.l NULL
- dc.l NULL
- dc.w REBOOT
- dc.l NULL
- _IT9:
- dc.b 2,0,RP_JAM2,0
- dc.w 15,4
- dc.l NULL
- dc.l _ITT9
- dc.l _IT9b
- _IT9b:
- dc.b 1,0,RP_JAM1,0
- dc.w 14,3
- dc.l NULL
- dc.l _ITT9
- dc.l NULL
- _ITT9:
- dc.b 'ReBoot',0
-
- even
-
-
- ;======== Tekst structures for viewmemory ============
-
- IText8:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,26
- dc.l NULL
- MTE8 dc.l NULL
- dc.l IText8b
- IText8b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,25
- dc.l NULL
- MTE8b dc.l NULL
- dc.l IText9
-
- IText9:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,36
- dc.l NULL
- MTE9 dc.l NULL
- dc.l IText9b
- IText9b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,35
- dc.l NULL
- MTE9b dc.l NULL
- dc.l IText10
-
- IText10:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,46
- dc.l NULL
- MTE10 dc.l NULL
- dc.l IText10b
- IText10b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,45
- dc.l NULL
- MTE10b dc.l NULL
- dc.l IText11
-
- IText11:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,56
- dc.l NULL
- MTE11 dc.l NULL
- dc.l IText11b
- IText11b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,55
- dc.l NULL
- MTE11b dc.l NULL
- dc.l IText12
-
- IText12:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,66
- dc.l NULL
- MTE12 dc.l NULL
- dc.l IText12b
- IText12b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,65
- dc.l NULL
- MTE12b dc.l NULL
- dc.l IText13
-
- IText13:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,81
- dc.l NULL
- MTE13 dc.l NULL
- dc.l IText13b
- IText13b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,80
- dc.l NULL
- MTE13b dc.l NULL
- dc.l NULL
- IText14:
- dc.b 2,0,RP_JAM2,0
- dc.w 10
- y1 dc.w 0
- dc.l NULL
- MTE14 dc.l dummy
- dc.l IText14b
- IText14b:
- dc.b 1,0,RP_JAM1,0
- dc.w 9
- y2 dc.w 0
- dc.l NULL
- MTE14b dc.l dummy
- dc.l NULL
-
- ;== Help strings =====================================
-
- Text15:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,21
- dc.l NULL
- dc.l T15
- dc.l Text15b
- Text15b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,20
- dc.l NULL
- dc.l T15
- dc.l Text16
- T15 dc.b 'This program is programmed by EA van Breemen',0
- even
- Text16:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,31
- dc.l NULL
- dc.l T16
- dc.l Text16b
- Text16b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,30
- dc.l NULL
- dc.l T16
- dc.l Text17
- T16 dc.b 'Copyright by The Orega Programming Group Holland',0
- even
- Text17:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,41
- dc.l NULL
- dc.l T17
- dc.l Text17b
- Text17b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,40
- dc.l NULL
- dc.l T17
- dc.l Text18
- T17 dc.b 169,'1989,1990. Any commercially based reproducing',0
- even
- Text18:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,51
- dc.l NULL
- dc.l T18
- dc.l Text18b
- Text18b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,50
- dc.l NULL
- dc.l T18
- dc.l Text19
- T18 dc.b 'by any means of this shareware product is illegal.',0
- even
- Text19:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,61
- dc.l NULL
- dc.l T19
- dc.l Text19b
- Text19b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,60
- dc.l NULL
- dc.l T19
- dc.l Text20
- T19 dc.b 'If you find this program usefull please send $10',0
- even
- Text20:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,71
- dc.l NULL
- dc.l T20
- dc.l Text20b
- Text20b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,70
- dc.l NULL
- dc.l T20
- dc.l Text21
- T20 dc.b 'to: EA van Breemen, Berliozplein 15, 2651 VG',0
- even
- Text21:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,81
- dc.l NULL
- dc.l T21
- dc.l Text21b
- Text21b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,80
- dc.l NULL
- dc.l T21
- dc.l Text22
- T21 dc.b 'Berkel en Rodenrijs, Holland.',0
- even
- Text22:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,101
- dc.l NULL
- dc.l T22
- dc.l Text22b
- Text22b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,100
- dc.l NULL
- dc.l T22
- dc.l Text23
- T22 dc.b 'Help: Ctrl-F1 ..... NewShell',0
- even
- Text23:
- dc.b 2,0,RP_JAM2,0
- dc.w 11,111
- dc.l NULL
- dc.l T23
- dc.l Text23b
- Text23b:
- dc.b 1,0,RP_JAM1,0
- dc.w 10,110
- dc.l NULL
- dc.l T23
- dc.l NULL
- T23 dc.b ' Ctrl-HELP ..... BigBrother',0
- even
-
-
- ;=====================================================
-
- expert dc.b 0,1,2,2,3,4,5,6,3,4,7
- dc.b 7,3,4,7,7,8,8,0,1,8,8
- dc.b 5,5,8,8,7,7,8,8,7,7
-
- even
-
- convtable dc.b '0123456789abcdef',0
- even
-
- message dc.b 'This system has been modified.',0
- L0 dc.b 'Memory is clean.',0
- L1 dc.b 'Sca virus.',0
- L2 dc.b 'Unknown virus or not mounted rad.',0
- L3 dc.b 'Non reset virus.',0
- L4 dc.b 'Sca like virus.',0
- L5 dc.b 'Dasa virus.',0
- L6 dc.b 'Dasa like virus.',0
- L7 dc.b 'ByteBandit or Lamer virus.',0
- L8 dc.b 'Unknown system configuration???',0
- L9 dc.b 'System has not been modified. ',0
- L10 dc.b ' ',0
-
- even
-
- TaskName dc.b 'RAD',0
- even
- devicename dc.b 'trackdisk.device',0
- even
- MyPortName dc.b 'BigBrother Port',0
- even
- errormessage dc.b 'BootBlock Read/Write Error.',0
- even
- found_rad dc.b 'RadTask has been found.',0
- even
- no_found_rad dc.b 'RadTask has not been found.',0
- even
- loginfo dc.b 'Launched by BigBrother V2.11',10,0
- even
- Alertstring dc.w 170
- dc.b 15
- dc.b '! ! ! ! ! W A R N I N G ! ! ! ! ! ',0
- dc.b 1
- dc.w 176
- dc.b 27
- dc.b 'Are you sure to clear the memory?',0
- dc.b 1
- dc.w 10
- dc.b 39
- dc.b 'Press <LEFT MOUSE BUTTON> for OK ---- Press <RIGHT MOUSE BUTTON> for CANCEL',0
- dc.b 0
- even
- Alertstring2 dc.w 170
- dc.b 15
- dc.b '! ! ! ! ! W A R N I N G ! ! ! ! ! ',0
- dc.b 1
- dc.w 176
- dc.b 27
- dc.b 'Are you sure you want to Reboot? ',0
- dc.b 1
- dc.w 10
- dc.b 39
- dc.b 'Press <LEFT MOUSE BUTTON> for OK ---- Press <RIGHT MOUSE BUTTON> for CANCEL',0
- dc.b 0
- even
-
- ;================
- ;= Library data =
- ;================
-
- DosName dc.b 'dos.library',0
- cnop 0,2
- IntuitionName dc.b 'intuition.library',0
- cnop 0,2
- GraphicsName dc.b 'graphics.library',0
- cnop 0,2
- ArpName dc.b 'arp.library',0
- even
- coldcapture dc.b 'ColdCapture - Offset 42 :$',0
- coolcapture dc.b 'CoolCapture - Offset 46 :$',0
- kickmemptr dc.b 'KickMemPtr - Offset 546 :$',0
- kicktagptr dc.b 'KickTagPtr - Offset 550 :$',0
- doio_vector dc.b 'DoIO Vector - Offset -454 :$',0
-
- number dc.b '00000000',0
- even
-
- BIG_NAME dc.b 'BigBrother',0
- even
- NIL_NAME dc.b 'NIL:',0
- even
-
- script2 dc.b 'Execute s:F2',0
- script3 dc.b 'Execute s:F3',0
- script4 dc.b 'Execute s:F4',0
- script5 dc.b 'Execute s:F5',0
- script6 dc.b 'Execute s:F6',0
- script7 dc.b 'Execute s:F7',0
- script8 dc.b 'Execute s:F8',0
- script9 dc.b 'Execute s:F9',0
- script10 dc.b 'Execute s:F10',0
-
-
-
- ;=====================
- ;= Input Device data =
- ;=====================
-
- InputDeviceName dc.b 'input.device',0
- even
-
-
-
- df0 dc.l 'DF0:'
- df1 dc.l 'DF1:'
- df2 dc.l 'DF2:'
- df3 dc.l 'DF3:'
-
- dc.b ' DoIO vector:'
- even
- DoIOVector dc.l $fc06dc ; DoIO Vector for V1.2
-
- ;=======================
- ;= Arp data structures =
- ;=======================
-
- newshell: ; Process control structure for Arp
-
- nsh_StackSize dc.l 4000 ; Stacksize for new process
- nsh_Pri dc.b 0 ; Priority of new process
- nsh_Control dc.b 128+8 ; Make a newshell
- nsh_LogMsg dc.l loginfo
- nsh_Input dc.l 0 ; Optional default input
- nsh_Output dc.l 0 ; Optional default output
- nsh_Reserved ds.l 5 ; Extra
-
- CONNAME dc.b 'CON:0/0/639/75/The Orega Programming Group Holland',0
- even
-
- newshell2: ; Process control structure for Arp
-
- pcb_StackSize dc.l 4000 ; Stacksize for new process
- pcb_Pri dc.b 0 ; Priority of new process
- pcb_Control dc.b 16 ; Make a background cli
- pcb_TrapCode dc.l 0
- pcb_Input dc.l 0 ; Optional default input
- pcb_Output dc.l 0 ; Optional default output
- pcb_Console dc.l CONNAME ; Union
- pcb_LoadedCode dc.l mymain
- pcb_lastGasp dc.l 0
- pcb_WBProcess dc.l 0
-
- even
- bss
-
- DOSBase ds.l 1
- GfxBase ds.l 1
- IntuitionBase ds.l 1
- ArpBase ds.l 1
- window ds.l 1
- window2 ds.l 1
- rp ds.l 1
- rp2 ds.l 1
- buffer ds.l 1
- keyfound ds.w 1
- commando ds.w 1
- Mode ds.b 1
- signal ds.b 1
- Flag ds.b 1
- drive ds.b 1
- io_error ds.b 1
- even
- diskio ds.l 20
- readreply ds.l 8
- memorymask ds.l 1
- filehandle ds.l 1
- lock ds.l 1
- InputRequestBlock ds.b $30
- even
- InputDevPort ds.b $22
- even
- HandlerStuff ds.b $16
- even
- dummy ds.b 70
- even
- userport ds.l 1
- code
-
- ;=======================================
- ;= Initialisation code for Big Brother =
- ;=======================================
- mymain move.l $4,a6
- lea.l DosName,a1
- clr.l d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,DOSBase
- beq nodos
- bsr loadprefs
- move.l $4,a6
- clr.l d0
- lea.l IntuitionName,a1
- jsr _LVOOpenLibrary(a6)
- move.l d0,IntuitionBase
- beq nointuition
- clr.l d0
- lea.l GraphicsName,a1
- jsr _LVOOpenLibrary(a6)
- move.l d0,GfxBase
- beq nographics
-
- bsr.s initall ; Open inputdevice etc.
- bra check ; Jump to checkroutine
-
-
- ;==================================
- ;= loadprefs: tries to load prefs =
- ;==================================
- loadprefs:
- move.l DOSBase,a6
- move.l #prefs_file,d1
- move.l #-2,d2
- jsr _LVOLock(a6)
- move.l d0,lock
- beq no_prefs
- move.l #prefs_file,d1
- move.l #1005,d2
- jsr _LVOOpen(a6)
- move.l d0,filehandle
- move.l d0,d1
- move.l #DoIOVector,d2
- moveq #4,d3
- jsr _LVORead(a6)
- move.l filehandle,d1
- jsr _LVOClose(a6)
- move.l lock,d1
- jsr _LVOUnLock(a6)
- no_prefs:
- rts
-
-
- ;=============================================
- ;= Routine to install a input device handler =
- ;=============================================
-
-
- initall: ; Open inputdevice
- move.b #0,signal
- move.b #0,Flag
- move.b #0,drive ; df0: is default
-
- move.l $4,a6 ; Make a message port
- moveq #-1,d0
- jsr _LVOAllocSignal(a6)
- lea.l InputDevPort,a0
- move.b d0,mp_SigBit(a0)
- move.b #0,mp_Node+Ln_Pri(a0)
- move.b #NT_MSGPORT,mp_Node+Ln_Type(a0)
- move.l #MyPortName,mp_Node+Ln_Name(a0)
- move.b #PA_SIGNAL,mp_Flags(a0)
- sub.l a1,a1
- jsr _LVOFindTask(a6)
- move.l d0,a3
- move.l #-1,WindowPtr(a3) ; I don't want requesters
- lea.l InputDevPort,a0
- move.l d0,mp_SigTask(a0)
- move.l a0,a1
- jsr _LVOAddPort(a6)
-
- lea.l InputRequestBlock,a0
- move.b #NT_MESSAGE,io_Message+mn_Node+Ln_Type(a0)
- move.w #$30,io_Message+mn_Length(a0)
- lea.l InputDevPort,a1
- move.l a1,io_Message+mn_ReplyPort(a0)
-
- lea.l HandlerStuff,a1
- move.l #myhandler,is_Code(a1)
- move.b #127,is_Node+Ln_Pri(a1)
- move.l #0,is_Data(a1)
-
- lea.l InputRequestBlock,a1
- lea.l InputDeviceName,a0
- clr.l d0
- clr.l d1
- jsr _LVOOpenDevice(a6)
-
- lea.l InputRequestBlock,a0
- move.w #IND_ADDHANDLER,io_Command(a0)
- move.l #HandlerStuff,io_Data(a0)
- move.l a0,a1
- jsr _LVODoIO(a6) ; Install handler
-
- rts
-
- ;====================================
- ;= Code for checking the Amiga =
- ;====================================
-
-
- check bsr checkevents ; Any messages ???
- bsr.s chlus ; Check routine
- move.l DOSBase,a6
- moveq #50,d1
- jsr _LVODelay(a6)
- bra.s check
-
- chlus move.l $4,a0
- move.l a0,a6
- clr.l d2
- tst.l 42(a0)
- beq.s 1$
- ori.l #1,d2
- 1$ tst.l 46(a0)
- beq.s 2$
- ori.l #1,d2
- 2$ tst.l 546(a0)
- beq.s 3$
- ori.l #2,d2
- 3$ tst.l 550(a0)
- beq.s 4$
- ori.l #2,d2
- 4$ lea.l 350(a0),a0
- lea.l devicename,a1
- move.l $4,a6
- jsr _LVOFindName(a6)
- move.l d0,a0
- move.l -28(a0),d1
- cmp.l #$fc0000,d1
- bhs.s 5$
- ori.l #8,d2
- 5$ move.l $4,a0
- move.l -454(a0),d1
- cmp.l DoIOVector,d1
- beq.s 6$
- ori.l #4,d2
- 6$ lea.l TaskName,a1
- jsr _LVOFindTask(a6)
- tst.l d0
- beq.s 7$
- ori.l #16,d2
- 7$ andi.l #31,d2
- move.l d2,memorymask
- moveq #0,d0
- lea.l expert,a0
- move.b 0(a0,d2),d0
- cmp.b #0,d0
- beq.s novirus
- cmp.b #2,d0
- beq.s novirus
- move.b d0,signal
- novirus
- rts
-
-
- ;======================================================
- ;= The Input Device Handler for checking the Help Key =
- ;======================================================
-
- myhandler ; The input_handler
- cmp.b #IECLASS_RAWKEY,4(a0)
- beq.s akey
- noop move.l a0,d0 ; Return head of list
- rts
- akey move.w 8(a0),d0
- and.w #IEQUALIFIER_CONTROL,d0 ; Mask Control bit
- beq.s noop ; None of my keys
- cmp.w #HELP_KEY,6(a0)
- bne.s 1$ ; Check next key
- move.w #HELP_KEY,keyfound
- bra needed
- 1$ cmp.w #FUNC_F1,6(a0)
- bne.s 2$
- move.w #FUNC_F1,keyfound
- bra needed
- 2$ cmp.w #FUNC_F2,6(a0)
- bne.s 3$
- move.w #FUNC_F2,keyfound
- bra needed
- 3$ cmp.w #FUNC_F3,6(a0)
- bne.s 4$
- move.w #FUNC_F3,keyfound
- bra needed
- 4$ cmp.w #FUNC_F4,6(a0)
- bne.s 5$
- move.w #FUNC_F4,keyfound
- bra needed
- 5$ cmp.w #FUNC_F5,6(a0)
- bne.s 6$
- move.w #FUNC_F5,keyfound
- bra needed
- 6$ cmp.w #FUNC_F6,6(a0)
- bne.s 7$
- move.w #FUNC_F6,keyfound
- bra needed
- 7$ cmp.w #FUNC_F7,6(a0)
- bne.s 8$
- move.w #FUNC_F7,keyfound
- bra needed
- 8$ cmp.w #FUNC_F8,6(a0)
- bne.s 9$
- move.w #FUNC_F8,keyfound
- bra needed
- 9$ cmp.w #FUNC_F9,6(a0)
- bne.s 10$
- move.w #FUNC_F9,keyfound
- bra needed
- 10$ cmp.w #FUNC_F10,6(a0)
- bne noop
- move.w #FUNC_F10,keyfound
- needed move.b #1,Flag ; Big Brother Control Window is needed !
- move.l (a0),a0
- cmp.l #0,a0
- beq.s out
- bra myhandler ; Process more events !
- out clr.l d0 ; End of chain
- rts
-
- ;=====================================================
- ;= Checks if an event has occured and responds to it =
- ;=====================================================
-
- checkevents
- clr.l d0
- move.b signal,d0
- beq.s no_virus_signal
- cmp.b #2,d0
- beq.s no_virus_signal
- bra.s activate ; Open window etc., a virus !!!
- no_virus_signal:
- move.b Flag,d0
- beq.s 1$ ; No keys has been pressed
- move.w keyfound,d0
- cmp.w #FUNC_F1,d0
- beq newcli ; Spawn a cli
- cmp.w #HELP_KEY,d0
- beq.s activate
- bra do_function_keys
- 1$ rts
-
- ;=========================================================
- ;= Routine for the window processing in case of an event =
- ;=========================================================
-
- activate
- move.l IntuitionBase,a6
- jsr _LVOWBenchToFront(a6)
- move.l #NewWindowStructure1,a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window
- move.l d0,a0
- move.l wd_RPort(a0),rp
- move.l rp,a0
- move.l #Border2,a1
- moveq #0,d0
- moveq #0,d1
- jsr _LVODrawBorder(a6)
- bsr printstatus
- waitloop:
- move.l window,a0
- move.l wd_UserPort(a0),a0
- move.l a0,userport
- moveq #0,d1
- move.b mp_SigBit(a0),d1
- moveq #1,d0
- asl.l d1,d0
- move.l $4,a6
- jsr _LVOWait(a6) ; Wait for an event
- look move.l $4,a6
- move.l userport,a0 ; Get UserPort
- jsr _LVOGetMsg(a6) ; Get Message from IDCMP Port
- tst.l d0
- beq waitloop ; No more messages left
- move.l d0,a1
- move.l im_Class(a1),d4
- move.l im_Code(a1),d5
- move.l im_Address(a1),a2
- jsr _LVOReplyMsg(a6) ; Reply the message
-
- cmp.l #CLOSEWINDOW,d4
- beq.s watchmode
- cmp.l #GADGETUP,d4
- bne.s look
-
- bsr.s process_gadgets ; Someone has pressed a gadget
- cmp.w #WATCH,d0
- bne.s look
-
- watchmode:
- move.l IntuitionBase,a6
- move.l window,a0
- jsr _LVOCloseWindow(a6)
- move.b #0,Flag
- move.b #0,signal
- rts
-
- ;==================================
- ;= Routine for processing Gadgets =
- ;==================================
-
- process_gadgets:
- move.w gg_GadgetID(a2),d0
- cmp.w #WATCH,d0
- bne.s 1$
- rts
- 1$ cmp.w #DRIVE,d0
- beq.s nextdrive
- cmp.w #CLEAR,d0
- beq clearmemory
- cmp.w #VIEW,d0
- beq viewbootblock
- cmp.w #INSTALL,d0
- beq installdisk
- cmp.w #MEMORY,d0
- beq viewmemory
- cmp.w #NEWSHELL,d0
- beq newcli
- cmp.w #HELP,d0
- beq showhelp
- cmp.w #REBOOT,d0
- beq reboot
- clr.l d0 ; Clear d0 if GadgetID <> WATCH
- rts
-
- ;==============================
- ;= Finds next available drive =
- ;==============================
-
- nextdrive:
- move.b drive,d0
- addq #1,d0
- cmp.b #4,d0 ; drive number too high ???
- bne.s 1$
- moveq #0,d0 ; just select df0:
- 1$ cmp.b #0,d0
- bne.s 2$
- move.l df0,ITextText1
- 2$ cmp.b #1,d0
- bne.s 3$
- move.l df1,ITextText1
- 3$ cmp.b #2,d0
- bne.s 4$
- move.l df2,ITextText1
- 4$ cmp.b #3,d0
- bne.s 5$
- move.l df3,ITextText1
- 5$ move.b d0,drive
- move.l #ITextText1,d1
- move.l DOSBase,a6
- jsr _LVODeviceProc(a6) ; Does drive exists ?
- tst.l d0
- bne.s 6$ ; Yeah
- bra.s nextdrive ; Try next drive
- 6$ move.l #Gadget1,a0
- move.l window,a1
- move.l #0,a2
- move.l IntuitionBase,a6
- jsr _LVORefreshGadgets(a6)
- clr.l d0
- rts
-
- ;================================
- ;= Clears memory area from viri =
- ;================================
-
- clearmemory:
- bsr yesno ; Are you sure????
- tst.l d0
- beq clearexit ; Noop
- move.l $4,a6
- jsr _LVODisable(a6)
- lea.l TaskName,a1
- jsr _LVOFindTask(a6)
- tst.l d0
- beq.s 1$ ; No rad
- move.l d0,a1
- jsr _LVORemTask(a6) ; Kill it!!!
- 1$ move.l $4,a6
- clr.l 42(a6)
- clr.l 46(a6)
- clr.l 546(a6)
- clr.l 550(a6)
- clr.l 554(a6)
- move.l DoIOVector,-454(a6)
- clr.l d1
- lea.l 34(a6),a0
- move.w #$16,d0
- loop add.w (a0)+,d1
- dbf d0,loop
- not.w d1
- move.w d1,82(a6)
- jsr _LVOEnable(a6)
- move.l IntuitionBase,a6
- move.l #0,a0
- jsr _LVODisplayBeep(a6)
- move.l $4,a6
- move.b #0,signal
- bsr chlus ; Check memory
- bsr printstatus ; Show current memory status
- clearexit:
- clr.l d0 ; No WATCH Gadget
- rts
-
- ;====================================
- ;= Are you sure to clear memory???? =
- ;====================================
-
- yesno:
- move.l IntuitionBase,a6
- move.l #0,d0
- move.l #Alertstring,a0
- move.l #50,d1
- jsr _LVODisplayAlert(a6)
- rts
-
- ;====================================
- ;= Are you sure to reboot???? =
- ;====================================
-
- yesno2:
- move.l IntuitionBase,a6
- move.l #0,d0
- move.l #Alertstring2,a0
- move.l #50,d1
- jsr _LVODisplayAlert(a6)
- rts
-
-
-
-
-
- ;==================================================
- ;= Routine shows a bootblock in ascii in a window =
- ;==================================================
-
- viewbootblock:
- move.w #534,hsize ; Adjust windowwidth
- move.w #150,hsize+2 ; Adjust height
- lea.l InitTitle,a0
- move.l a0,title2
- move.l IntuitionBase,a6
- move.l #NewWindowStructure2,a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window2
- move.l d0,a0
- move.l wd_RPort(a0),rp2
-
- move.l $4,a6
- move.l #1024,d0
- moveq #2,d1 ; Chip memory needed
- jsr _LVOAllocMem(a6) ; Allocate buffer for bootblock
- move.l d0,buffer
-
- bsr readbootblock
- move.b io_error,d0
- cmp.b #29,d0
- bne 1$ ; Disk is available
-
- move.l window2,a0
- move.l #-234,d0
- move.l #-100,d1
- move.l IntuitionBase,a6
- jsr _LVOSizeWindow(a6) ; Make window smaller
- move.l #disk_changed,Mt5
- move.l #disk_changed,Mt6
- move.l rp2,a0
- clr.l d0
- clr.l d1
- move.l #MyTekst5,a1
- jsr _LVOPrintIText(a6) ; No disk !
- bra 2$ ; skip printbuffer
-
-
- 1$ bsr printbuffer
-
- 2$ move.l buffer,a1
- move.l #1024,d0
- move.l $4,a6
- jsr _LVOFreeMem(a6) ; Free buffer for bootblock
-
- move.l window2,a0
- bsr waitforclose ; Wait for closegadget
-
- move.l IntuitionBase,a6
- move.l window2,a0
- jsr _LVOCloseWindow(a6)
- clr.l d0 ; No WATCH Gadget
- rts
-
- ;====================================
- ;= Routine for installing your disk =
- ;====================================
-
- installdisk:
- move.w #300,hsize
- move.w #50,hsize+2 ; Adjust height
- lea.l InstallTitle,a0
- move.l a0,title2
- move.l IntuitionBase,a6
- move.l #NewWindowStructure2,a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window2
- move.l d0,a0
- move.l wd_RPort(a0),rp2
-
- move.l $4,a6
- move.l #1024,d0
- move.l #2+1<<16,d1 ; Cleared Chip memory needed
- jsr _LVOAllocMem(a6) ; Allocate buffer for bootblock
- move.l d0,buffer
- beq skip_install ; Prevent a guru
-
- lea.l bootcode,a0
- move.l d0,a1
- move.l #bootendcode-bootcode-1,d1
- 1$ move.b (a0)+,(a1)+ ; Copy bootblock into buffer
- dbra d1,1$
- move.l #StandardBootBlock,a0
- move.l #Standardend-StandardBootBlock-1,d1
- 2$ move.b (a0)+,(a1)+
- dbra d1,2$
-
- bsr sum
- bsr writebuffer
-
- move.l buffer,a1
- move.l #1024,d0
- move.l $4,a6
- jsr _LVOFreeMem(a6) ; Free buffer for bootblock
-
- tst.b io_error
- bne.s 3$ ; An error has occured
- move.l #install_message,Mt5
- move.l #install_message,Mt6
- bra.s install_m
- 3$ move.b io_error,d0
- cmp.b #28,d0 ; disk protected???
- bne 4$
- move.l #disk_protected,Mt5
- move.l #disk_protected,Mt6
- bra install_m
- 4$ cmp.b #29,d0 ; disk changed ????
- bne 5$
- move.l #disk_changed,Mt5
- move.l #disk_changed,Mt6
- bra install_m
- 5$ move.l #install_fail,Mt5 ; Unknown failure
- move.l #install_fail,Mt6
- install_m
- move.l rp2,a0
- clr.l d0
- clr.l d1
- move.l #MyTekst5,a1
- move.l IntuitionBase,a6
- jsr _LVOPrintIText(a6)
-
-
- move.l window2,a0
- bsr waitforclose ; Wait for closegadget
-
- skip_install:
- move.l IntuitionBase,a6
- move.l window2,a0
- jsr _LVOCloseWindow(a6)
- clr.l d0 ; No WATCH Gadget
- rts
-
- ;=============================================
- ;= Routine for displaying a part of ExecBase =
- ;=============================================
-
-
- viewmemory:
- move.w #318,hsize
- move.w #100,hsize+2 ; Adjust height
- lea.l ViewTitle,a0
- move.l a0,title2
- move.l IntuitionBase,a6
- move.l #NewWindowStructure2,a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window2
- move.l d0,a0
- move.l wd_RPort(a0),rp2
-
- move.l $4,a6
- move.l #5*80,d0
- move.l #1<<16,d1
- jsr _LVOAllocMem(a6) ; Allocate buffer
- move.l d0,buffer
- move.l d0,-(a7)
-
- move.l d0,MTE8
- move.l d0,MTE8b
- add.l #80,d0
- move.l d0,MTE9
- move.l d0,MTE9b
- add.l #80,d0
- move.l d0,MTE10
- move.l d0,MTE10b
- add.l #80,d0
- move.l d0,MTE11
- move.l d0,MTE11b
- add.l #80,d0
- move.l d0,MTE12
- move.l d0,MTE12b
-
-
-
- ;======== ColdCapture ==============
-
- lea.l coldcapture,a0
- move.l buffer,a1
- bsr stringcopy
-
- move.l $4,a6
- move.l 42(a6),a0
- bsr makestring
-
-
- ;======= CoolCapture =============
-
- add.l #80,buffer
- lea.l coolcapture,a0
- move.l buffer,a1
- bsr stringcopy
-
- move.l $4,a6
- move.l 46(a6),a0
- bsr makestring
-
-
- ;======== KickMemPtr ===============
-
- add.l #80,buffer
- lea.l kickmemptr,a0
- move.l buffer,a1
- bsr stringcopy
-
- move.l $4,a6
- move.l 546(a6),a0
- bsr makestring
-
-
- ;========== KickTagPtr ================
-
- add.l #80,buffer
- lea.l kicktagptr,a0
- move.l buffer,a1
- bsr stringcopy
-
- move.l $4,a6
- move.l 550(a6),a0
- bsr makestring
-
- ;==== DoIO =========================
-
- add.l #80,buffer
- lea.l doio_vector,a0
- move.l buffer,a1
- bsr stringcopy
-
- move.l $4,a6
- move.l -454(a6),a0
- bsr makestring
-
- ;===== Rad ============================
-
- move.l $4,a6
- lea.l TaskName,a1
- jsr _LVOFindTask(a6)
- tst.l d0
- beq.s no_rad ; No rad
- move.l #found_rad,MTE13
- move.l #found_rad,MTE13b
- bra.s rad_cont
- no_rad move.l #no_found_rad,MTE13
- move.l #no_found_rad,MTE13b
- rad_cont:
-
- move.l rp2,a0
- clr.l d0
- clr.l d1
- move.l #IText8,a1
- move.l IntuitionBase,a6
- jsr _LVOPrintIText(a6)
-
- move.l $4,a6
- move.l #5*80,d0
- move.l (a7)+,a1
- jsr _LVOFreeMem(a6) ; Free buffer
-
- move.l window2,a0
- bsr waitforclose
-
- move.l IntuitionBase,a6
- move.l window2,a0
- jsr _LVOCloseWindow(a6)
-
- clr.l d0 ; No WATCH Gadget
- rts
-
- ;==============
- ;= Makestring =
- ;==============
-
- makestring:
- move.l $4,a6
- lea.l number,a1
- bsr.s convert
-
- lea.l number,a1
- move.l buffer,a0
- bsr.s stringadd
- rts
-
- ;========================
- ;= Copy string a0 -> a1 =
- ;========================
-
- stringcopy:
- 1$ move.b (a0)+,d0
- move.b d0,(a1)+
- bne.s 1$
- rts
-
- ;==============================
- ;= Add string a1 to string a0 =
- ;==============================
-
- stringadd:
- move.l a2,-(a7)
- 1$ cmp.b #0,(a0)+ ; Find end of string a0
- bne.s 1$
- subq #1,a0
- move.l a0,a2
- move.l a1,a0
- move.l a2,a1
- bsr.s stringcopy ; Paste a1 to a0
- move.l (a7)+,a2
- rts
-
- ;==========================================
- ;= Convert value in a0 to buffer a1 (Hex) =
- ;==========================================
-
- convert:
- movem.l d2-d3/a2,-(a7)
- lea.l convtable,a2
- move.l a0,d1
- moveq #7,d3
- 1$ move.l d1,d2
- and.l #$f,d2
- move.l d2,d0
- move.b 0(a2,d0),-(a7)
- lsr.l #4,d1
- dbra d3,1$
- moveq #7,d3
- 2$ move.b (a7)+,(a1)+
- dbra d3,2$
- movem.l (a7)+,d2-d3/a2
- rts
-
-
-
-
- ;=========================================
- ;= Calculates lenght of string in buffer =
- ;= Returns lenght in d0 =
- ;=========================================
-
- length:
- clr.l d0
- move.l a5,-(a7)
- move.l buffer,a5
- 1$ addq #1,d0
- cmp.b #0,(a5)+
- bne.s 1$
- subq #1,d0
- move.l (a7)+,a5
- rts
- ;=======================================
- ;= Waits for closegadget to be pressed =
- ;=======================================
-
- waitforclose:
- move.l $4,a6
- move.l a5,-(a7)
- move.l a0,a5
- 1$ move.l a5,a0
- move.l wd_UserPort(a0),a0
- move.l a0,-(a7)
- moveq #0,d1
- move.b mp_SigBit(a0),d1
- moveq #1,d0
- asl.l d1,d0
- jsr _LVOWait(a6) ; Wait for an event
- move.l (a7)+,a0 ; Get UserPort
- jsr _LVOGetMsg(a6) ; Get Message from IDCMP Port
- move.l d0,a1
- move.l im_Class(a1),d4
- jsr _LVOReplyMsg(a6) ; Reply the message
-
- cmp.l #CLOSEWINDOW,d4
- bne.s 1$
- move.l (a7)+,a5
- rts
-
-
- ;========================================
- ;= Prints current virusstatus in window =
- ;========================================
-
- printstatus:
- move.l window,a0
- move.l wd_RPort(a0),a1
- move.l a1,rp ; Store RastPort
-
- moveq #0,d1
- move.b signal,d1
- beq.s 1$ ; No extra message needed (=Clean)
- cmp.b #2,d1
- beq.s 1$ ; The same...
- move.l #message,Mt3 ; System has been modified!
- move.l #message,Mt4
- bra 12$
-
- 1$ move.l rp,a0 ; Clear message box
- clr. d0
- clr.l d1
- move.l #MyTekst3a,a1
- move.l IntuitionBase,a6
- jsr _LVOPrintIText(a6)
-
- move.l #L9,Mt3 ; Clear previous(?) message!
- move.l #L9,Mt4
-
-
- 12$ move.l rp,a0
- clr. d0
- clr.l d1
- move.l #MyTekst3,a1
- move.l IntuitionBase,a6
- jsr _LVOPrintIText(a6)
-
- move.b signal,d1
- cmp.b #0,d1
- bne.s 2$
- lea.l L0,a0
- bra.s 10$
- 2$ cmp.b #1,d1
- bne.s 3$
- lea.l L1,a0
- bra.s 10$
- 3$ cmp.b #2,d1
- bne.s 4$
- lea.l L2,a0
- bra.s 10$
- 4$ cmp.b #3,d1
- bne.s 5$
- lea.l L3,a0
- bra.s 10$
- 5$ cmp.b #4,d1
- bne.s 6$
- lea.l L4,a0
- bra.s 10$
- 6$ cmp.b #5,d1
- bne.s 7$
- lea.l L5,a0
- bra.s 10$
- 7$ cmp.b #6,d1
- bne.s 8$
- lea.l L6,a0
- bra.s 10$
- 8$ cmp.b #7,d1
- bne.s 9$
- lea.l L7,a0
- bra.s 10$
- 9$ cmp.b #8,d1
- bne.s 11$
- lea.l L8,a0
- 10$ move.l a0,Mt1
- move.l a0,Mt2
- move.l rp,a0
- move.l #MyTekst,a1
- clr.l d0
- clr.l d1
- move.l IntuitionBase,a6
- jsr _LVOPrintIText(a6)
- 11$ rts
-
-
- ;======================================
- ;= Prints buffer in ascii on a window =
- ;======================================
-
- printbuffer:
- move.l buffer,a3
- move.l a3,a4
- move.l #1023,d1
- clr.l d0
- cloop move.b (a3)+,d0
- cmp.b #31,d0
- bls.s outrange
- cmp.b #127,d0
- bhs.s outrange
- move.b d0,(a4)+
- dbra d1,cloop
- bra.s printit
- outrange:
- move.b #'.',(a4)+
- dbra d1,cloop
- printit:
- move.l window2,a0
- move.l wd_RPort(a0),rp2
- moveq #0,d3
- move.l buffer,a3
- ploop move.l d3,d1
- mulu #8,d1
- add.l #20,d1
- move.w d1,y1
- subq #1,d1
- move.w d1,y2
-
-
- move.l #dummy,a2
- move.l d3,d1
- mulu #64,d1
- move.l a3,a0
- add.l d1,a0
- moveq #63,d0
- 1$ move.b (a0)+,(a2)+ ; copy string to dummy
- dbra d0,1$
- move.b #0,(a2) ; end string with 0
-
- clr.l d0
- clr.l d1
- move.l rp2,a0
- lea.l IText14,a1
- move.l IntuitionBase,a6
- jsr _LVOPrintIText(a6)
-
- addq #1,d3
- cmp.l #15,d3
- bls.s ploop
- rts
-
- ;============================
- ;= Read bootblock in buffer =
- ;============================
-
- readbootblock:
- move.w #READ,commando
- bsr.s bootio
- rts
-
- ;=============================
- ;= Write buffer to bootblock =
- ;=============================
-
- writebuffer:
- move.w #WRITE,commando
- bsr.s bootio
- rts
-
-
- ;==========================================
- ;= Multi function boot read/write routine =
- ;= =
- ;= io_error contains error on exit =
- ;= =
- ;==========================================
-
- bootio:
- move.l $4,a6
-
- sub.l a1,a1
- jsr _LVOFindTask(a6)
- move.l d0,readreply+$10
- lea.l readreply,a1
- jsr _LVOAddPort(a6)
- lea.l diskio,a1
- moveq #0,d0
- move.b drive,d0
- clr.l d1
- lea.l devicename,a0
- jsr _LVOOpenDevice(a6)
- tst.l d0
- beq.s tskip
- lea.l readreply,a1
- jsr _LVORemPort(a6)
- bra trackerror
- tskip lea.l diskio,a1
- move.l buffer,40(a1)
- move.l #readreply,14(a1)
- move.w #TD_CHANGESTATE,28(a1)
- jsr _LVODoIO(a6)
- move.l diskio+32,d6
- beq.s tskip2
- move.b #29,io_error
- bra terror ; No disk!
-
- tskip2 move.w commando,d5
- cmp.w #READ,d5
- bne.s 1$ ; Don't CMD_CLEAR for a write
- lea.l diskio,a1 ; We will read a bootblock
- move.l buffer,40(a1)
- move.l #readreply,14(a1) ; so, force a reading
- move.w #5,28(a1)
- jsr _LVODoIO(a6) ; CMD_Clear (Clear trackbuffer)
-
- 1$ lea.l diskio,a1
- move.l #readreply,14(a1)
- move.w commando,28(a1)
- move.l buffer,40(a1)
- move.l #1024,36(a1)
- move.l #0,44(a1)
- move.l $4,a6
- jsr _LVODoIO(a6)
- move.b diskio+31,io_error ; Error number
-
- move.w commando,d5
- cmp.w #WRITE,d5
- bne.s 2$
-
- lea.l diskio,a1
- move.l buffer,40(a1)
- move.l #readreply,14(a1)
- move.w #4,28(a1) ; CMD_UPDATE
- move.l $4,a6
- jsr _LVODoIO(a6) ; Write all buffers out
- move.b diskio+31,io_error ; Get error number
-
- 2$ tst.b io_error
- beq.s tgood
- terror lea.l errormessage,a1
- move.l window2,a0
- move.l #0,a2
- move.l IntuitionBase,a6
- jsr _LVOSetWindowTitles(a6)
- move.l $4,a6
-
- tgood lea.l diskio,a1
- move.w #9,28(a1) ; TD_MOTOR
- move.l #0,36(a1)
- jsr _LVODoIO(a6)
-
- lea.l readreply,a1
- jsr _LVORemPort(a6)
- lea.l diskio,a1
- jsr _LVOCloseDevice(a6)
-
- trackerror:
- rts
-
- ;================================
- ;= The maincode of my Bootblock =
- ;================================
-
- bootcode:
- dc.b 'DOS',0
- dc.l 0
- root dc.l 880
- main move.l $4,a6
- lea.l Dosname(pc),a1
- jsr _LVOFindResident(a6)
- move.l d0,a0
- move.l 22(a0),a0
- clr.l d0
- rts
- Dosname dc.b 'dos.library',0
- bootendcode:
-
- ;=========================================================
- ;= Routine which calculates the checksum of my bootblock =
- ;=========================================================
- even
-
- sum clr.l d0
- move.l buffer,a0
- move.l #255,d1
- sumloop add.l (a0)+,d0
- bcc.s sumcont
- addq #1,d0
- sumcont dbra d1,sumloop
- moveq #-1,d1
- sub.l d0,d1
- move.l buffer,a2
- move.l d1,4(a2)
- rts
-
- ;===============================================
- ;= This routine will spawn a new cli using arp =
- ;===============================================
-
- newcli:
- move.l $4,a6
- lea.l ArpName,a1
- clr.l d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,ArpBase
- bne 1$
- move.l IntuitionBase,a6 ; Arp is not available
- move.l #0,a0
- jsr _LVODisplayBeep(a6)
- bra 2$
- 1$ move.l ArpBase,a6
- lea.l CONNAME,a0
- move.l #0,a1
- lea.l newshell,a2
- jsr _ASyncRun(a6)
- move.l $4,a6
- move.l ArpBase,a1
- jsr _LVOCloseLibrary(a6) ; Close Arp
- 2$ move.b #0,Flag ; Clear key signal
- move.b #0,keyfound
- clr.l d0
- rts
-
-
- do_function_keys:
- cmp.w #FUNC_F2,d0
- bne 1$
- lea.l script2,a0
- bra cont
- 1$ cmp.w #FUNC_F3,d0
- bne 2$
- lea.l script3,a0
- bra cont
- 2$ cmp.w #FUNC_F4,d0
- bne 3$
- lea.l script4,a0
- bra cont
- 3$ cmp.w #FUNC_F5,d0
- bne 4$
- lea.l script5,a0
- bra cont
- 4$ cmp.w #FUNC_F6,d0
- bne 5$
- lea.l script6,a0
- bra cont
- 5$ cmp.w #FUNC_F7,d0
- bne 6$
- lea.l script7,a0
- bra cont
- 6$ cmp.w #FUNC_F8,d0
- bne 7$
- lea.l script8,a0
- bra cont
- 7$ cmp.w #FUNC_F9,d0
- bne 8$
- lea.l script9,a0
- bra cont
- 8$ cmp.w #FUNC_F10,d0
- bne ret
- lea.l script10,a0
- cont move.l a0,d1
- clr.l d2
- clr.l d3
- move.l DOSBase,a6
- jsr _LVOExecute(a6)
-
- ret move.b #0,Flag ; Clear key signal
- move.b #0,keyfound
- clr.l d0
- rts
-
-
-
- ;====================================
- ;= Help routine: shows credits+help =
- ;====================================
-
- showhelp:
- move.w #418,hsize
- move.w #130,hsize+2 ; Adjust height
- move.l #HelpTitle,title2
- move.l IntuitionBase,a6
- move.l #NewWindowStructure2,a0
- jsr _LVOOpenWindow(a6)
- move.l d0,window2
- move.l d0,a0
- move.l wd_RPort(a0),a0
- move.l #Text15,a1
- clr.l d0
- clr.l d1
- jsr _LVOPrintIText(a6)
-
- move.l window2,a0
- bsr waitforclose
-
- move.l IntuitionBase,a6
- move.l window2,a0
- jsr _LVOCloseWindow(a6)
-
- clr.l d0
- rts
-
- ;======================
- ;= The reboot routine =
- ;======================
-
- reboot bsr yesno2 ; Want to reboot???
- tst.l d0
- bne.s 1$ ; noop
- rts
- 1$ move.l $4,a6
- move.l #-1,$4
- cmp.w #V36_EXEC,LIB_VERSION(a6)
- blt.s old_exec
- jmp TEMP_ColdReboot(a6) ;Let Exec do it...
- ;NOTE: Control flow never returns to here
-
-
- old_exec:
- lea.l GoAway(pc),a5 ;address of code to execute
- jsr _LVOSupervisor(a6) ;trap to code at (a5)...
- ;NOTE: Control flow never returns to here
-
-
- ;-------------- MagicResetCode ---------DO NOT CHANGE-----------------------
-
- CNOP 0,4 ;IMPORTANT! Longword align!
- GoAway: lea.l MAGIC_ROMEND,a0 ;(end of ROM)
- sub.l MAGIC_SIZEOFFSET(a0),a0 ;(end of ROM)-(ROM size)=PC
- move.l 4(a0),a0 ;Get Initial Program Counter
- subq.l #2,a0 ;now points to second RESET
- reset ;first RESET instruction
- jmp (a0) ;CPU Prefetch executes this
- ;NOTE: the RESET and JMP instructions must share a longword!
-
- ;---------------------------------------DO NOT CHANGE-----------------------
-
-
-
- ;=======================
- ;= The Cleanup Routine =
- ;=======================
-
- exit move.l $4,a6
- move.l GfxBase,a1
- jsr _LVOCloseLibrary(a6)
- nographics:
- move.l IntuitionBase,a1
- jsr _LVOCloseLibrary(a6)
- nointuition:
- move.l DOSBase,a1
- jsr _LVOCloseLibrary(a6)
- nodos rts
-
- ;=========================
- ;= The end of the source =
- ;=========================
-
- end
-
-
-
-
-